/// Miaoyi UI框架尺寸系统
///
/// 定义了与Miaoyi框架一致的尺寸、间距和边距
class HDimens {
  /// 默认构造函数
  const HDimens();

  // 边距尺寸
  /// 极小边距 - 2.0
  double get spacingXs => 2.0;
  
  /// 小边距 - 4.0
  double get spacingS => 4.0;
  
  /// 中小边距 - 8.0
  double get spacingM => 8.0;
  
  /// 常规边距 - 16.0
  double get spacingL => 16.0;
  
  /// 大边距 - 24.0
  double get spacingXl => 24.0;
  
  /// 超大边距 - 32.0
  double get spacingXxl => 32.0;

  // 圆角
  /// 默认圆角半径 - 3.0
  double get borderRadius => 3.0;
  
  /// 中等圆角半径 - 5.0
  double get borderRadiusMedium => 5.0;
  
  /// 大圆角半径 - 8.0
  double get borderRadiusLarge => 8.0;

  // 按钮尺寸
  /// 按钮高度 - 大 - 46px
  double get buttonHeightLarge => 46.0;
  
  /// 按钮高度 - 中 - 34px
  double get buttonHeightNormal => 34.0;
  
  /// 按钮高度 - 小 - 28px
  double get buttonHeightSmall => 28.0;
  
  /// 按钮高度 - 迷你 - 22px
  double get buttonHeightMini => 22.0;

  /// 按钮水平内边距 - 大
  double get buttonPaddingHorizontalLarge => 16.0;
  
  /// 按钮水平内边距 - 中
  double get buttonPaddingHorizontalNormal => 14.0;
  
  /// 按钮水平内边距 - 小
  double get buttonPaddingHorizontalSmall => 10.0;
  
  /// 按钮水平内边距 - 迷你
  double get buttonPaddingHorizontalMini => 8.0;

  /// 按钮垂直内边距 - 大
  double get buttonPaddingVerticalLarge => 12.0;
  
  /// 按钮垂直内边距 - 中
  double get buttonPaddingVerticalNormal => 8.0;
  
  /// 按钮垂直内边距 - 小
  double get buttonPaddingVerticalSmall => 5.0;
  
  /// 按钮垂直内边距 - 迷你
  double get buttonPaddingVerticalMini => 3.0;

  // 表单元素尺寸
  /// 输入框高度 - 默认
  double get inputHeight => 34.0;
  
  /// 输入框高度 - 大
  double get inputHeightLarge => 46.0;
  
  /// 输入框高度 - 小
  double get inputHeightSmall => 28.0;
  
  /// 输入框高度 - 迷你
  double get inputHeightMini => 22.0;

  /// 输入框内边距 - 水平
  double get inputPaddingHorizontal => 12.0;
  
  /// 输入框内边距 - 垂直
  double get inputPaddingVertical => 6.0;
  
  /// 输入框内边距 - 水平 - 简写
  double get inputPaddingH => inputPaddingHorizontal;
  
  /// 输入框内边距 - 垂直 - 简写
  double get inputPaddingV => inputPaddingVertical;
  
  /// 输入框内边距 - 水平 - 大
  double get inputPaddingLargeH => 16.0;
  
  /// 输入框内边距 - 垂直 - 大
  double get inputPaddingLargeV => 12.0;
  
  /// 输入框内边距 - 水平 - 小
  double get inputPaddingSmallH => 10.0;
  
  /// 输入框内边距 - 垂直 - 小
  double get inputPaddingSmallV => 5.0;
  
  /// 输入框内边距 - 水平 - 迷你
  double get inputPaddingMiniH => 8.0;
  
  /// 输入框内边距 - 垂直 - 迷你
  double get inputPaddingMiniV => 3.0;
  
  /// 输入框边框半径
  double get inputBorderRadius => borderRadius;
  
  /// 输入框边框宽度
  double get inputBorderWidth => borderWidth;
  
  /// 输入框聚焦时边框宽度
  double get inputFocusedBorderWidth => borderWidthThick;

  // 卡片尺寸
  /// 卡片内边距
  double get cardPadding => 20.0;
  
  /// 卡片头部内边距
  double get cardHeaderPadding => 14.0;
  
  /// 卡片内容内边距
  double get cardBodyPadding => 20.0;
  
  /// 卡片底部内边距
  double get cardFooterPadding => 14.0;

  // 边框宽度
  /// 默认边框宽度
  double get borderWidth => 1.0;
  
  /// 粗边框宽度
  double get borderWidthThick => 2.0;

  // 阴影
  /// 卡片阴影值
  double get cardElevation => 1.0;
  
  /// 弹出层阴影值
  double get popupElevation => 4.0;
  
  /// 对话框阴影值
  double get dialogElevation => 24.0;

  // 动画时间
  /// 短动画时长 - 150ms
  int get animationDurationShort => 150;
  
  /// 标准动画时长 - 300ms
  int get animationDurationStandard => 300;
  
  /// 长动画时长 - 500ms
  int get animationDurationLong => 500;

  // 图标尺寸
  /// 小图标尺寸
  double get iconSizeSmall => 14.0;
  
  /// 普通图标尺寸
  double get iconSizeNormal => 18.0;
  
  /// 大图标尺寸
  double get iconSizeLarge => 24.0;

  // 交互状态
  /// 悬停透明度变化
  double get hoverOpacity => 0.85;
  
  /// 激活状态透明度变化
  double get activeOpacity => 0.7;
  
  /// 禁用状态透明度
  double get disabledOpacity => 0.65;
} 